上一篇我們已實作gRPC server,接下來我們開始實作與server溝通的gRPC client程式。
var grpcClient pb.MyprotoServiceClient
func main() {
//GRPC 連線
grpconn, err := grpc.Dial(":8081", grpc.WithInsecure())
if err != nil {
log.Fatalf("grpc create error: %v", err)
}
defer grpconn.Close()
grpcClient = pb.NewMyprotoServiceClient(grpconn)
AddUser("test", "0000")
LoginUser("test", "0000")
UserList()
}
func AddUser(username, userpwd string) {
res, err := grpcClient.AddUser(context.Background(),
&pb.UserRequest{
UserName: username,
UserPwd: userpwd,
})
if err != nil {
log.Fatalf("AddUser Error: %v", err)
}
fmt.Println(res)//執行結果
}
func LoginUser(username, userpwd string) {
res, err := grpcClient.LoginUser(context.Background(),
&pb.UserRequest{
UserName: username,
UserPwd: userpwd,
})
if err != nil {
log.Fatalf("LoginUser Error: %v", err)
}
fmt.Println(username, res.Result) //執行結果
}
func UserList() {
res, err := grpcClient.UsersList(context.Background(), &pb.UsersListRequest{})
if err != nil {
log.Fatalf("UsersList Error: %v", err)
}
fmt.Println(res.UserName) //執行結果
}
以上就是一個簡單的gRPC client實作。
grpcurl是一個命令工具,可以透過terminal呼叫gRPC,grpcurl是使用JSON格式傳送訊息,可以透過grpcurl來呼叫proto方法,以便檢查gRPC服務是否正確。
✗ grpcurl -plaintext -d '{"user_name":"a001","user_pwd":"0000"}' 127.0.0.1:8081 mypb.MyprotoService/AddUser;
{
"result": "ok"
}
✗ grpcurl -plaintext -d '{"user_name":"a001","user_pwd":"0000"}' 127.0.0.1:8081 mypb.MyprotoService/LoginUser;
{
"result": "ok"
}
✗ grpcurl -plaintext 127.0.0.1:8081 mypb.MyprotoService/UsersList;
{
"result": "ok",
"userName": [
"a001"
]
}